    
using System;
using System.Collections.Generic;
using EYDIngenieria.ERP.Aplicacion.Gestion;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;
using EYDIngenieria.ERP.ObjetosDeNegocio.Repositorio;
using NUnit.Framework;
using EYDIngenieria.ERP.Aplicacion.Mantenedores;

namespace Test
{
    [TestFixture]
    public class TestProveedor : AbstractModelTestCase
    {
   
        [Test]
        public void TestPrincipal()
          {
              //AgregarInventario();
              AgregaUsuarioRol();
              AgregaEstadoOC();
              AgregaEstadoOT();
          }
       

        public void AgregarInventario()
        {
            GestionInventario gi = new GestionInventario();
            GestionFactura gf = new GestionFactura();
            MantenedorProveedor mp = new MantenedorProveedor();
            MantenedorProducto  pr = new MantenedorProducto();
            MantenedorMedioDePago mm = new MantenedorMedioDePago();
            MedioDePago medioPago = mm.Obtener(1);
            Proveedor rhona = mp.Obtener(1);

            Factura f = new Factura();
            f.Id = 0;
            f.NumeroFactura = 590360;
            f.Fecha = new DateTime(2012,06,22);
            f.Proveedor = rhona;
            f.MedioDePego = medioPago;
            
            Producto molduraDLPCTab = pr.Buscar("26 13 07")[0];
            DetalleFactura detallemolduraDLPCTab = new DetalleFactura();
            detallemolduraDLPCTab.Producto = molduraDLPCTab;
            detallemolduraDLPCTab.Cantidad = 6;
            detallemolduraDLPCTab.ValorUnitario = 6082;
            f.Detalle.Add(detallemolduraDLPCTab);
           
            Producto molduraDLPSTab = pr.Buscar("26 13 00")[0];
            DetalleFactura detallemolduraDLPSTab = new DetalleFactura();
            detallemolduraDLPSTab.Producto = molduraDLPSTab;
            detallemolduraDLPSTab.Cantidad = 3;
            detallemolduraDLPSTab.ValorUnitario = 1395;
            f.Detalle.Add(detallemolduraDLPSTab);

            Producto tomaCorriente = pr.Buscar("32 16 41")[0];
            DetalleFactura detalletomaCorriente = new DetalleFactura();
            detalletomaCorriente.Producto = molduraDLPSTab;
            detalletomaCorriente.Cantidad = 40;
            detalletomaCorriente.ValorUnitario = 1045;
            f.Detalle.Add(detalletomaCorriente);

            Producto cajaSBPTA = pr.Buscar("32 50 20")[0];
            DetalleFactura detallecajaSBPTA = new DetalleFactura();
            detallecajaSBPTA.Producto = cajaSBPTA;
            detallecajaSBPTA.Cantidad = 40;
            detallecajaSBPTA.ValorUnitario = 803;
            f.Detalle.Add(detallecajaSBPTA);

            Producto placaOx3 = pr.Buscar("32 10 06")[0];
            DetalleFactura detalleplacaOx3 = new DetalleFactura();
            detalleplacaOx3.Producto = placaOx3;
            detalleplacaOx3.Cantidad = 15;
            detalleplacaOx3.ValorUnitario = 1234;
            f.Detalle.Add(detalleplacaOx3);

            Producto placaOx2 = pr.Buscar("32 10 04")[0];
            DetalleFactura detalleplacaOx2 = new DetalleFactura();
            detalleplacaOx2.Producto = placaOx2;
            detalleplacaOx2.Cantidad = 15;
            detalleplacaOx2.ValorUnitario = 1234;
            f.Detalle.Add(detalleplacaOx2);

            Producto barraTomaTierra = pr.Buscar("63 03 00")[0];
            DetalleFactura detallebarraTomaTierra = new DetalleFactura();
            detallebarraTomaTierra.Producto = barraTomaTierra;
            detallebarraTomaTierra.Cantidad = 1;
            detallebarraTomaTierra.ValorUnitario = 1950;
            f.Detalle.Add(detallebarraTomaTierra);

            Producto contectorTT = pr.Buscar("63 03 21")[0];
            DetalleFactura detallecontectorTT = new DetalleFactura();
            detallecontectorTT.Producto = contectorTT;
            detallecontectorTT.Cantidad = 1;
            detallecontectorTT.ValorUnitario = 750;
            f.Detalle.Add(detallecontectorTT);

            Producto cajaEstanca = pr.Buscar("31 07 16")[0];
            DetalleFactura detallecajaEstanca = new DetalleFactura();
            detallecajaEstanca.Producto = cajaEstanca;
            detallecajaEstanca.Cantidad = 4;
            detallecajaEstanca.ValorUnitario = 947;
            f.Detalle.Add(detallecajaEstanca);

            Producto conduitPVC = pr.Buscar("63 31 03")[0];
            DetalleFactura detalleconduitPVC = new DetalleFactura();
            detalleconduitPVC.Producto = conduitPVC;
            detalleconduitPVC.Cantidad = 10;
            detalleconduitPVC.ValorUnitario = 634;
            f.Detalle.Add(detalleconduitPVC);

            gf.GuardarFactura(f);
 
            AgregaEstadoOT();


            AgregaEstadoOC();

            AgregaUsuarioRol();

            CompraMaterialesOT c = new CompraMaterialesOT();
            c.Detalle = "Compra de materiales para orden de trabajo";
            c.Documento = "Factura";
            c.NumeroDocumento = "12354498";
            c.Fecha = DateTime.Now;
            c.Monto = 100;
            c.OrdenDeTrabajo = null;
            DetalleCompraMaterialesOT detalle = new DetalleCompraMaterialesOT();
            detalle.Cantidad = 1;
            detalle.Producto = barraTomaTierra;
           // detalle.Fecha = DateTime.Now;
            detalle.ValorTotal = 100;
            c.DetalleCompra.Add(detalle);
            GestionCompraMaterialesOT gc = new GestionCompraMaterialesOT();
            gc.RegistraCompra(c);

          
        
        }

        private static void AgregaUsuarioRol()
        {
            Rol administrador = new Rol();
            administrador.Codigo = "adm";
            administrador.Nombre = "Administrador";
            administrador.Descripcion = "Administrador de sistema";
            administrador.Activo = true;
            administrador.Create();

            Rol tesorero = new Rol();
            tesorero.Codigo = "tes";
            tesorero.Nombre = "Tesorero";
            tesorero.Descripcion = "Encargado de tesoreria";
            tesorero.Activo = true;
            tesorero.Create();

            Rol bodeguero = new Rol();
            bodeguero.Codigo = "bod";
            bodeguero.Nombre = "Bodeguero";
            bodeguero.Descripcion = "Encargado de bodega";
            bodeguero.Activo = true;
            bodeguero.Create();

            Rol tecnico = new Rol();
            tecnico.Codigo = "tec";
            tecnico.Nombre = "Tecnico";
            tecnico.Descripcion = "Tecnico";
            tecnico.Activo = true;
            tecnico.Create();

            Usuario uAdmin = new Usuario();
            uAdmin.Nombre = "Usuario administrador de sistema";
            uAdmin.NombreUsuario = "admin";
            uAdmin.Contrasena = "admin";
            uAdmin.Rol = administrador;
            uAdmin.Activo = true;

            uAdmin.Create();

            Usuario uTesorero = new Usuario();
            uTesorero.Nombre = "Usuario encargado de tesoreria";
            uTesorero.NombreUsuario = "tesorero";
            uTesorero.Contrasena = "tesorero";
            uTesorero.Rol = tesorero;
            uTesorero.Activo = true;
            uTesorero.Create();

            Usuario uTecnico = new Usuario();
            uTecnico.Nombre = "Usuario Tecnico";
            uTecnico.NombreUsuario = "tecnico";
            uTecnico.Contrasena = "tecnico";
            uTecnico.Rol = tecnico;
            uTecnico.Activo = true;
            uTecnico.Create();

            Usuario uBodeguero = new Usuario();
            uBodeguero.Nombre = "Usuario Encargado de Bodega";
            uBodeguero.NombreUsuario = "bodeguero";
            uBodeguero.Contrasena = "bodeguero";
            uBodeguero.Rol = bodeguero;
            uBodeguero.Activo = true;
            uBodeguero.Create();
        }

        private static void AgregaEstadoOC()
        {
            EstadoOrdenDeCompra ocIngresada = new EstadoOrdenDeCompra(0, "Ingresada", "I");
            ocIngresada.Create();

            EstadoOrdenDeCompra ocAsignado = new EstadoOrdenDeCompra(0, "Asignada", "A");
            ocAsignado.Create();

            EstadoOrdenDeCompra ocFacturada = new EstadoOrdenDeCompra(0, "Facturada", "P");
            ocFacturada.Create();
            EstadoOrdenDeCompra ocRechazada = new EstadoOrdenDeCompra(0, "Rechazada", "R");
            ocRechazada.Create();
        }

        private static void AgregaEstadoOT()
        {
            EstadoOrdenDeTrabajo Ingresado = new EstadoOrdenDeTrabajo(0,"Ingresado","I");
            Ingresado.Create();

            EstadoOrdenDeTrabajo Aprobado = new EstadoOrdenDeTrabajo(0, "Aprobado", "A");
            Aprobado.Create();

            EstadoOrdenDeTrabajo Despachado = new EstadoOrdenDeTrabajo(0, "Despachado", "D");
            Despachado.Create();

            EstadoOrdenDeTrabajo Facturado = new EstadoOrdenDeTrabajo(0, "Facturado", "F");
            Facturado.Create();

            EstadoOrdenDeTrabajo Rechazado = new EstadoOrdenDeTrabajo(0, "Recchazado", "R");
            Rechazado.Create();
        }

        
    }
}
